#include <bits/stdc++.h>
using namespace std;
//查找begin后比str[begin]字典序更小的字符下标
int findMin(char *str, int begin){
    int res = begin;
    for(int i = begin + 1; i < strlen(str); i++){
        if(str[res]  > str[i]){
            res = i;
        }
    }
    return res;
}
//将str[right]与相邻左边交换，一直到str[left]
void swap(char *str, int left, int right){
    char temp = str[right];
    for(int i = right; i > left; i--){
        str[i] = str[i - 1];
    }
    str[left] = temp;
}
//检查s1 字典序 是否 小于 s2
bool checkSmaller(char *s1, char *s2, int len){
    for(int i = 0; i < len; i++){
        if(s1[i] < s2[i])
            return true;
        else if(s2[i] < s1[i])
            return false;
    }
    return false;
}
int main(){
    char s1[105];
    char s2[105];
    scanf("%s", s1);
    scanf("%s", s2);
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int res = 0;
    int cur = 0;
    int index;
    while(cur <= len2){
        if(checkSmaller(s1, s2, len2))
            break;
        index = findMin(s1, cur);
        swap(s1, cur, index);
        res += (index - cur);
        cur++;
    }
    if(checkSmaller(s1, s2, len2)){
        cout<<res;
    }else{
        cout<<"-1";
    }
    return 0;
}


/*

题目描述
Alice和Bob在玩游戏，两个人分别有一个计分板，记录各自的得分。
得分X的字典序严格小于得分Y，那么就认为得分X高于得分Y。
Bob想要自己的分数高于Alice，他选择了自己计分板中一些相邻位置交换。
为了不让Alice发现，Bob必须交换尽量少的次数，请写一个程序帮助Bob。

输入说明
第一行一个字符串，表示Bob的得分，第二行一个字符串，表示Alice的得分。

字符串长度均不超过100，只含小写英文字母。


输出说明
输出一行，表示最少交换次数。如果无解输出-1。

输入样例
样例1：

cdeead

adae

样例2：

ccabb

abdc

样例3：

acb

abc

样例4：

hgfedcba

abcdefgz

输出样例
样例1：

4

样例2：

4

样例3：

-1

样例4：

28

数据范围提示
第1个样例将位置5的a交换4次到位置1，变为acdeed

第2个样例将位置3的a交换2次到位置1，将位置4的b交换2次到位置2，变为abccb

*/